package com.moxi.mogublog.redis.prefix.base;

import com.moxi.mogublog.constants.CommonConstant;

/**
 * 模板模式:抽象类
 *
 * @author Lishuai
 * @version 1.0.0
 * @date 2020-04-21
 */
public abstract class BasePrefix implements KeyPrefix {

    /**
     * 键的前缀
     */
    private String prefix;

    /**
     * 过期时间，单位：秒
     */
    private int expireSeconds;

    public BasePrefix() {
    }

    public BasePrefix(String prefix) {
        // 0 和负数 代表永不过期
        this(prefix, 0);
    }

    public BasePrefix(String prefix, int expireSeconds) {
        this.prefix = prefix;
        this.expireSeconds = expireSeconds;
    }

    /**
     * 为键设置过期时间
     *
     * @param expireSeconds 过期时间，单位:秒
     */
    public void setExpireSeconds(int expireSeconds) {
        this.expireSeconds = expireSeconds;
    }

    @Override
    public int getExpireSeconds() {
        // 默认0代表永不过期
        return expireSeconds;
    }

    @Override
    public String getPrefix() {
        String className = getClass().getSimpleName();
        return className + CommonConstant.SYMBOL_COLON + prefix + CommonConstant.SYMBOL_COLON;
    }

}
